package com.zyh.service.impl;

import com.zyh.dao.PostDao;
import com.zyh.dao.UserDao;
import com.zyh.pojo.Post;
import com.zyh.pojo.User;
import com.zyh.service.PostService;
import com.zyh.util.PatternUtil;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.List;

@Service
public class PostServiceImpl implements PostService {
    @Autowired
    PostDao postDao;
    @Autowired
    UserDao userDao;

    /**
     * 创建一篇新的文章
     * 1.将文章的内容添加到哈希中   post:id
     * 2.将文章加入到所有文章列表中 timeline
     * 3.将文章添加到个人列表中     user:id:post
     * @param content 文章内容
     */
    @Override
    public void create(String content) {
        User user=userDao.findByName((String) SecurityUtils.getSubject().getPrincipal());//通过用户名查出用户id
        List<String> aiteUserName=PatternUtil.findName(content);
        content=PatternUtil.replace(content);
        Post post = new Post(postDao.getPostId(), content, user.getId(), user.getUsername(), new Date());
        postDao.create(post);
        postDao.add_mention(post.getId(),aiteUserName);
    }
    /**
     * 根据用户名查出这个用户所有的文章
     *
     * @return
     */
    @Override
    public List<Post> findPostsByUserName(String username) {
        User user=userDao.findByName(username);
        return postDao.findPostsByUid(user.getId());
    }

    /**
     * 查出所有用户的文章
     * @return
     */
    @Override
    public List<Post> findAll() {
        return postDao.findAll();
    }

    @Override
    public List<Post> findMentionsByName(String name) {
        return postDao.findMentionsByName(name);
    }


}
